#include <iostream>
using namespace std;
string s;
int t=0;
int n,m; 
long long ret=0;
void find()
{
	for(int i=0;i<s.size();i++)
	{
		if(s[i]=='0')t*=2;
		else t--;
	}
	if(t==0)
	ret++;
}
void dfs(int x,int y)
{
	if(x==n&&y==m)
	{
		find();
		t=2;
		cout<<s<<endl;
		while(!s.size())s.pop_back();
		return;
	}
	if(x>n||y>m)
	return;
	s+='0';
	dfs(x+1,y);
	s.pop_back();
	
	s+='1';
	dfs(x,y+1);
	s.pop_back();
}
int main()
{
	cin>>n>>m;
	dfs(0,0);
	cout<<ret%(1000000007);
	return 0;
}
